﻿using System.Collections.Generic;
using Beaker.OpenCube.Render.Maths;

namespace Beaker.OpenCube.Render.Sampling
{
	public interface ISampler
	{
		/// <summary>
		/// Gets the number of samples
		/// </summary>
		int SampleCount { get; }

		/// <summary>
		/// Generate samples.
		/// </summary>
		/// <returns>A sequence of samples.</returns>
		IEnumerable<Point2> GenerateSamplesSquare( SampleOptions options = SampleOptions.None );

		/// <summary>
		/// Generate samples in a disc form.
		/// </summary>
		/// <returns>A sequence of samples.</returns>
		IEnumerable<Point2> GenerateSamplesDisc( SampleOptions options = SampleOptions.None );
	}
}
